【NOIP】单词接龙 |
您所在的位置:网站首页 › 单位 单词接龙 › 【NOIP】单词接龙 |
【NOIP】单词接龙
题目 题目描述单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含关系,例如at 和 atide 间不能相连。 输入格式输入的第一行为一个单独的整数n (0n≤20)表示单词数,以下n 行每行有一个单词,输入的最后一行为一个单个字符,表示“龙”开头的字母。你可以假定以此字母开头的“龙”一定存在. 输出格式只需输出以此字母开头的最长的“龙”的长度 输入输出样例输入 #1 复制 5 at touch cheat choose tact a 输出 #1 复制 23 说明/提示(连成的“龙”为atoucheatactactouchoose) NOIp2000提高组第三题 分析这题看了好多大佬的解法,感觉这个比较好懂,而且超级超级详细。(就直接上大佬解法。。。。。。。。。)
大佬的代码。。 #include #include #include #include #define maxn 100 using namespace std; int n; int ans = 0; string word[maxn];//字符串数组,用来存储单词 string beginn;//用来存储开头字符 int used[maxn];//这个就是用来记录dfs时候每一个单词被使用了几次的数组 bool check(string s,string m,int k){//重点一,check函数判断接口可行性,k代表接口长度,以下同 int lens = s.length(); for (int i=0;i word[i]; cin >> beginn; dfs(beginn); cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |